#include<bits/stdc++.h>
using namespace std;
const int maxn = 1005;
int N, V;
int v[maxn], w[maxn];
int dp[maxn][maxn];
int main() {
  ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  cin>>N>>V;
  for(int i=1; i<=N; ++i)
    cin>>v[i]>>w[i];
  for(int i=0; i<=N; ++i) {
    dp[i][0] = 0;
  }
  for(int j=0; j<=V; ++j) dp[0][j] = 0;
  for(int i=1; i<=N; ++i)
    for(int j=0; j<=V; ++j)
      if(j-v[i]>=0)
        dp[i][j] = max(dp[i-1][j], dp[i-1][j-v[i]]+w[i]);
      else
        dp[i][j] = dp[i-1][j];
#ifdef local
  for(int i=0; i<=N; ++i) {
    for(int j=0; j<=V; ++j) {
      cout<<dp[i][j]<<' ';
    }
    cout<<endl;
  }
#endif

  cout<<dp[N][V]<<'\n';
}
